#!/bin/bash
# 实现, 对于一个内核模块工程的创建; 也就是说是一个compile命令; 
# 基本使用方法; 
# help 		打印当前文档中所有的帮助信息; 

COMPILE_DIR="."
HELP_INFO=""
SIMPILE_MAKE_INFO=""
COMPILE_COMMAND=""

#错误标记;
EXIT_DIR_NOEXIST=2
EXIT_MAKEFILE_NOEXIST=3
EXIT_HELP_INFO=4


help()
{
	echo "=====欢迎来到编译文档帮助========"
	echo "compile [option] [value] "
	echo "        -h/--help 显示帮助文档"
	echo "        -d/--directory directory_name 指定需要编译的目录，内部需要拥有makefile文件"
	echo "        -s/--simple 当指定这个选项的时候，智能获取make的错误信息"
	echo "        -m/--makefile makefile的命令选项"
	echo "=====欢迎您光临编译文档帮助======="
}

#解析传入参数;
parse_param()
{
	param_num=$(echo ""$#+1"|bc")
	for((i=1;i<"$param_num";i++))
	do 
		case "$1" in 
			"-d"|"--directory")
				shift; 
				COMPILE_DIR="$1"
				if [ ! -d "$COMPILE_DIR" ] 
				then 
					echo "您所输入的编译目录不存在,请重新运行程序"
					exit "$EXIT_DIR_NOEXIST" 
				fi
				if [ ! -e "$COMPILE_DIR""/Makefile" -o ! -e "$COMPILE_DIR""/makefile" ] 
				then 
					echo "您编译的文档不存在makefile文件，请您编辑makefile文档"
					exit "$EXIT_MAKEFILE_NOEXIST"
				fi 
				shift; 
				i=$(echo ""$i"+1"|bc)
				;;
			"-h"|"--help")
				HELP_INFO="$1"
				shift
				;;
			"-s"|"--simple")
				SIMPILE_MAKE_INFO="$1"
				shift
				;;
			"-m"|"--makefile")
				shift
				COMPILE_COMMAND="$1"
				shift
				i=$(echo ""$i"+1"|bc)
				;;
		esac
	done
}

parse_param $*
echo "$HELP_INFO"
echo "$COMPILE_DIR"
echo "$SIMPILE_MAKE_INFO"

#help信息; 
if [ "$HELP_INFO" != "" ] 
then
	  help
		exit  "$EXIT_HELP_INFO"
fi

#如果编译目录为当前目录的话，判断当前目录下是否拥有makefile文件; 
if [ "$COMPILE_DIR" == "." ] 
then 
	if [ ! -e "$COMPILE_DIR""/makefile" -o ! -e "$COMPILE_DIR""/Makefile" ] 
	then 
		echo "您当前目录下的makefile文件不存在，请您创建makefile后，再次执行;"
		exit "$EXIT_MAKEFILE_NOEXIST"
	fi 
fi

if [ "$SIMPILE_MAKE_INFO" == "" ] 
then 
	echo "您所需要编译的目录为："$COMPILE_DIR
	echo "$COMPILE_DIR"
	cd "$COMPILE_DIR"
	if [ "$COMPILE_COMMAND" != "" ] 
	then
		make "$COMPILE_COMMAND"
	else
		make
	fi
	cd -
fi

#所有参数设置完毕，开始进行编译; 
